// 创建/更新 vip_reward_config 表数据，确保与当前静态展示一致
// 用法：node scripts/seed-vip-reward-config.js

const mysql = require('mysql2/promise');

const DB_HOST = process.env.DB_HOST || '43.143.253.188';
const DB_PORT = parseInt(process.env.DB_PORT || '3306', 10);
const DB_USER = process.env.DB_USER || 'nextjs';
const DB_PASS = process.env.DB_PASS || 'yEAiRE2jcxTyRBy5';
const DB_NAME = process.env.DB_NAME || 'nextjs';

/**
 * 返回各VIP等级的配置，尽量与 vip.service.ts 中静态列表一致
 */
function getStaticVipConfig() {
  /** type说明:
   * 0=特权说明 1=物品 2=经验 3=宝石 4=副将
   * choose: 0/1
   */
  const cfg = new Map();

  // lvl 0
  cfg.set(0, [
    { type: 0, title: '无视目前级别，可设置 20 级以内副将参战' },
    { type: 0, title: '授权气血石使用 1 天(每次与野怪战斗结束参战成员自动补满气血)' },
    { type: 0, title: '每天可使用 50 次挂机次数' },
  ]);

  // lvl 1
  cfg.set(1, [
    { type: 4, title: '20 级随机英才 1 名', choose: 0 },
    { type: 0, title: '无视级别限制进行自由交易' },
    { type: 0, title: '无视目前级别，立即开启挖宝玩法' },
    { type: 0, title: '授权气血石使用 2 天(每次与野怪战斗结束参战成员自动补满气血)' },
    { type: 0, title: '每天可使用 100 次挂机次数' },
  ]);

  // lvl 2
  cfg.set(2, [
    { type: 4, title: '0 级随机将才 1 名', choose: 0 },
    { type: 0, title: '获得非战斗时自动逐步恢复气血的能力' },
    { type: 0, title: '无视目前级别，立即开启当铺功能' },
    { type: 0, title: '无视目前级别，可直接率领 2 名副将参战' },
    { type: 0, title: '得到副将指挥旗(打怪升级时参战常人副将经验值加倍)' },
    { type: 0, title: '授权气血石使用 3 天(每次与野怪战斗结束参战成员自动补满气血)' },
    { type: 0, title: '每天可使用 150 次挂机次数' },
  ]);

  // lvl 3
  cfg.set(3, [
    { type: 2, title: '10000 经验值', expAmount: 10000 },
    { type: 4, title: '0 级随机国士 1 名' },
    { type: 1, title: '初级副将心法(30)', itemId: 147, quantity: 30 },
    { type: 0, title: '得到死士令(玩家的常人副将和英才都不再每天自动掉忠诚)' },
    { type: 0, title: '无视目前级别，立即开启娱乐场功能' },
    { type: 0, title: '无视目前级别，可直接率领 30 级以内的副将参战' },
    { type: 0, title: '获得周末教军场军训半价优惠特权' },
    { type: 0, title: '授权气血石使用 5 天' },
    { type: 0, title: '战斗中可加速 2 倍' },
    { type: 0, title: '每天可使用 200 次挂机次数' },
  ]);

  // lvl 4
  cfg.set(4, [
    { type: 2, title: '20000 经验值', expAmount: 20000 },
    { type: 4, title: '自选国士 1 名', choose: 1 },
    { type: 0, title: '得到英才指挥旗(打怪时参战英才经验值加倍)' },
    { type: 0, title: '得到主将打怪基础经验值增加 10%' },
    { type: 0, title: '无视目前级别，可直接率领 3 名副将参战' },
    { type: 0, title: '无视目前级别，可直接率领 40 级以内的副将参战' },
    { type: 0, title: '授权气血石使用 10 天' },
    { type: 0, title: '每天可使用 250 次挂机次数' },
    { type: 0, title: '每天发起 PK 次数上限提升至 5 次' },
  ]);

  // lvl 5
  cfg.set(5, [
    { type: 2, title: '30000 经验值', expAmount: 30000 },
    { type: 4, title: '自选国士 1 名', choose: 1 },
    { type: 1, title: '初级副将心法(50)', itemId: 147, quantity: 50 },
    { type: 1, title: '制裁之刃(1)', itemId: 257, quantity: 1 },
    { type: 0, title: '得到参战副将打怪基础经验值增加 10%' },
    { type: 0, title: '授权气血石增加使用 15 天' },
    { type: 0, title: '战斗中可加速 3 倍' },
    { type: 0, title: '无限制使用挂机次数' },
    { type: 0, title: '每天发起 PK 次数上限提升至 8 次' },
  ]);

  // lvl 6
  cfg.set(6, [
    { type: 2, title: '30000 经验值', expAmount: 30000 },
    { type: 3, title: '随机 10 级宝石一颗', gemLevel: 10 },
    { type: 4, title: '自选国士 1 名', choose: 1 },
    { type: 1, title: '高级副将心法(30)', itemId: 148, quantity: 30 },
    { type: 1, title: '蓝波球(1)', itemId: 408, quantity: 1 },
    { type: 1, title: '制裁之刃(1)', itemId: 257, quantity: 1 },
    { type: 0, title: '可以使用合成 1-7 级宝石功能特权' },
    { type: 0, title: '无视目前级别，可直接率领 50 级以内的副将参战' },
    { type: 0, title: '授权气血石增加使用 30 天' },
    { type: 0, title: '每天发起 PK 次数上限提升至 10 次' },
  ]);

  // lvl 7
  cfg.set(7, [
    { type: 2, title: '30000 经验值', expAmount: 30000 },
    { type: 3, title: '随机 10 级宝石一颗', gemLevel: 10 },
    { type: 4, title: '自选国士 1 名', choose: 1 },
    { type: 1, title: '高级副将心法(50)', itemId: 148, quantity: 50 },
    { type: 1, title: '蓝波球(1)', itemId: 408, quantity: 1 },
    { type: 1, title: '制裁之刃(1)', itemId: 257, quantity: 1 },
    { type: 0, title: '可以使用合成 1-8 级宝石功能特权' },
    { type: 0, title: '无视目前级别，可直接率领 60 级以内的副将参战' },
    { type: 0, title: '授权气血石增加使用 40 天' },
    { type: 0, title: '战斗中可加速 5 倍' },
    { type: 0, title: '每天发起 PK 次数上限提升至 15 次' },
  ]);

  // lvl 8
  cfg.set(8, [
    { type: 2, title: '30000 经验值', expAmount: 30000 },
    { type: 3, title: '随机 10 级宝石一颗', gemLevel: 10 },
    { type: 4, title: '自选国士 1 名', choose: 1 },
    { type: 1, title: '特级副将心法(50)', itemId: 149, quantity: 50 },
    { type: 1, title: '蓝波球(1)', itemId: 408, quantity: 1 },
    { type: 1, title: '制裁之刃(1)', itemId: 257, quantity: 1 },
    { type: 1, title: '转生丹(1)', itemId: 409, quantity: 1 },
    { type: 1, title: '小哥哥虎符(10)', itemId: 603, quantity: 10 },
    { type: 0, title: '可以使用合成 1-9 级宝石功能特权' },
    { type: 0, title: '无视目前级别，可直接率领 70 级以内的副将参战' },
    { type: 0, title: '授权气血石增加使用 50 天' },
    { type: 0, title: '战斗中可加速 8 倍' },
  ]);

  // lvl 9
  cfg.set(9, [
    { type: 2, title: '30000 经验值', expAmount: 30000 },
    { type: 3, title: '随机 10 级宝石一颗', gemLevel: 10 },
    { type: 4, title: '自选国士 1 名', choose: 1 },
    { type: 1, title: '特级副将心法(80)', itemId: 149, quantity: 80 },
    { type: 1, title: '蓝波球(1)', itemId: 408, quantity: 1 },
    { type: 1, title: '制裁之刃(2)', itemId: 257, quantity: 2 },
    { type: 1, title: '转生丹(1)', itemId: 409, quantity: 1 },
    { type: 1, title: '小姐姐虎符(10)', itemId: 602, quantity: 10 },
    { type: 0, title: '可以使用合成 1-10 级宝石功能特权' },
    { type: 0, title: '无视目前级别，可直接率领 80 级以内的副将参战' },
    { type: 0, title: '授权气血石增加使用 60 天' },
    { type: 0, title: '战斗中可加速 10 倍' },
  ]);

  return cfg;
}

async function ensureTable(conn) {
  await conn.execute(`CREATE TABLE IF NOT EXISTS vip_reward_config (
    id INT NOT NULL AUTO_INCREMENT,
    vip_level INT NOT NULL,
    type TINYINT NOT NULL,
    title VARCHAR(200) NOT NULL,
    choose TINYINT NOT NULL DEFAULT 0,
    item_id INT NULL,
    quantity INT NOT NULL DEFAULT 1,
    exp_amount INT NULL,
    gem_level INT NULL,
    deputy_star INT NULL,
    deputy_level INT NULL,
    sort_order INT NOT NULL DEFAULT 0,
    status TINYINT NOT NULL DEFAULT 1,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NULL,
    PRIMARY KEY (id),
    KEY idx_vip_type (vip_level,type)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;`);
}

async function main() {
  const conn = await mysql.createConnection({
    host: DB_HOST,
    port: DB_PORT,
    user: DB_USER,
    password: DB_PASS,
    database: DB_NAME,
    multipleStatements: true,
    charset: 'utf8mb4',
  });

  try {
    await ensureTable(conn);

    const cfg = getStaticVipConfig();
    // 清理同级别旧配置，重建（仅覆盖我们关心的等级0-9）
    await conn.execute('DELETE FROM vip_reward_config WHERE vip_level BETWEEN 0 AND 9');

    const now = new Date();
    for (let lvl = 0; lvl <= 9; lvl++) {
      const list = cfg.get(lvl) || [];
      for (let i = 0; i < list.length; i++) {
        const r = list[i];
        await conn.execute(
          `INSERT INTO vip_reward_config
            (vip_level,type,title,choose,item_id,quantity,exp_amount,gem_level,deputy_star,deputy_level,sort_order,status,created_at,updated_at)
           VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NULL)`,
          [
            lvl,
            r.type,
            r.title,
            r.choose ? 1 : 0,
            r.itemId ?? null,
            r.quantity ?? 1,
            r.expAmount ?? null,
            r.gemLevel ?? null,
            r.deputyStar ?? null,
            r.deputyLevel ?? null,
            i,
            1,
            now,
          ]
        );
      }
    }

    console.log('vip_reward_config seeded successfully.');
  } finally {
    await conn.end();
  }
}

main().catch((e) => {
  console.error(e);
  process.exit(1);
});
